/* Copyright (c) 2004-2024 Peigen.info. All rights reserved. */

package info.peigen.hotpot.business.account.core.service;

import info.peigen.hotpot.business.account.core.service.processor.active.*;
import info.peigen.hotpot.business.account.core.service.processor.create.*;
import info.peigen.hotpot.business.account.core.service.processor.edit.EditAccountProcessor;
import info.peigen.hotpot.business.account.core.service.processor.edit.EditAccountResultProcessor;
import info.peigen.hotpot.business.account.core.service.processor.freeze.FreezeAccountProcessor;
import info.peigen.hotpot.business.account.core.service.processor.freeze.FreezeAmountProcessor;
import info.peigen.hotpot.business.account.core.service.processor.freeze.UnfreezeAccountProcessor;
import info.peigen.hotpot.business.account.core.service.processor.freeze.UnfreezeAmountProcessor;
import info.peigen.hotpot.business.account.core.service.processor.store.*;
import info.peigen.hotpot.business.account.core.service.processor.transfer.TransferAccountProcessor;
import info.peigen.hotpot.business.account.core.service.processor.transfer.TransferAccountResultProcessor;
import info.peigen.hotpot.common.service.base.processor.AbstractProcessorService;
import lombok.AccessLevel;
import lombok.experimental.FieldDefaults;
import org.noear.solon.annotation.Inject;

/**
 * <b>(AbstractAccountService)</b>
 *
 * @author Peigen
 * @version 1.0.0
 * @since 2021/7/29
 */
@SuppressWarnings("ALL")
@FieldDefaults(level = AccessLevel.PROTECTED)
public class AbstractAccountService extends AbstractProcessorService {
    // Active Processors
    @Inject
    ActiveAccountProcessor            activeAccountProcessor;
    @Inject
    ActiveAccountForUnfreezeProcessor activeAccountForUnfreezeProcessor;
    @Inject
    ActiveFeeAccountProcessor         activeFeeAccountProcessor;
    @Inject
    ActiveDepositAccountProcessor     activeDepositAccountProcessor;
    @Inject
    ActiveWithdrawAccountProcessor    activeWithdrawAccountProcessor;
    @Inject
    ActiveTransferAccountProcessor    activeTransferAccountProcessor;

    // Business Processors
    @Inject
    CreateCustomerAccountProcessor     createCustomerAccountProcessor;
    @Inject
    CreatePartnerAccountProcessor      createPartnerAccountProcessor;
    @Inject
    CreateFeeAccountProcessor          createFeeAccountProcessor;
    @Inject
    CreateIntermediateAccountProcessor createIntermediateAccountProcessor;
    @Inject
    CreateProvisionsAccountProcessor   createProvisionsAccountProcessor;
    @Inject
    EditAccountProcessor               editAccountProcessor;
    @Inject
    FreezeAccountProcessor             freezeAccountProcessor;
    @Inject
    UnfreezeAccountProcessor           unfreezeAccountProcessor;
    @Inject
    FreezeAmountProcessor              freezeAmountProcessor;
    @Inject
    UnfreezeAmountProcessor            unfreezeAmountProcessor;
    @Inject
    TransferAccountProcessor           transferAccountProcessor;

    // Store Processors
    @Inject
    StoreCreateAccountProcessor    storeCreateAccountProcessor;
    @Inject
    StoreAccountProcessor          storeAccountProcessor;
    @Inject
    StoreAccountLogProcessor       storeAccountLogProcessor;
    @Inject
    StoreAccountTransLogProcessor  storeAccountTransLogProcessor;
    @Inject
    StoreAccountFreezeLogProcessor storeAccountFreezeLogProcessor;
    @Inject
    StoreAccountTransferProcessor  storeAccountTransferProcessor;

    // Result Processors
    @Inject
    CreateAccountResultProcessor   createAccountResultProcessor;
    @Inject
    EditAccountResultProcessor     editAccountResultProcessor;
    @Inject
    TransferAccountResultProcessor transferAccountResultProcessor;
}